define([ "ojs/ojcore", "knockout", "jquery", "text!../template/menu.html", "../../model/menu", "ojL10n!resources/nls/menu", "framework/js/constants/constants", "platform", "ojs/ojnavigationlist", "ojs/ojselectcombobox" ], function (oj, ko, $, template, MenuModel, resourceBundle, Constants, Platform) { "use strict"; var vm = function (params) { var self = this; self.languageOptions = ko.observable(params.languageOptions); self.toggleInner = params.toggleInner; self.avtMenuSrc = ko.observable(); self.avatarSize = ko.observable("xxs");//sm self.fullusername = ko.observable(); self.menu = ko.observable(); // if (params.rootModel.dashboardRole === "viewer" || params.rootModel.dashboardRole === "retailviewer") { // self.menu("scb-viewer-menu"); // } else if (params.rootModel.dashboardRole === "checker" || params.rootModel.dashboardRole === "approver") { // self.menu("scb-checker-menu"); // } else { // self.menu("menu"); // } // For menu dọc self.init = function () { if (params.dashboard.userData.userProfile) { var roles = params.dashboard.userData.userProfile.roles; if (Constants.userSegment === "CORP") { for (var i = 0; i < roles.length; i++) { if (roles[i] === "Viewer") { self.menu("scb-viewer-menu"); break; } else if (roles[i] === "Checker" || roles[i] === "Approver") { // if (params.dashboard.userData.userProfile.partyId.displayValue == "0821715") { // self.menu("menu-fileupload-checker"); // break; // } // else { // self.menu("scb-checker-menu"); // break; // } self.menu("scb-checker-menu"); break; } else if (roles[i] === "Maker") { // if (params.dashboard.userData.userProfile.partyId.displayValue == "0821715") { // self.menu("menu-fileupload-maker"); // break; // } // else { // self.menu("menu"); // break; // } self.menu("menu"); break; } } } else if (Constants.userSegment === "RETAIL") { for (var i = 0; i < roles.length; i++) { if (roles[i] === "RetailViewer") { self.menu("scb-viewer-menu"); break; } else if (roles[i] === "Customer") { self.menu("menu"); break; } } } } else { // Menu của trang index chưa login self.menu("menu"); } } params.baseModel.registerElement("breadcrumb", "core"); params.baseModel.registerElement("profile", "core"); params.baseModel.registerElement("about", "core"); params.baseModel.registerElement("entity-switch", "core"); params.baseModel.registerComponent("manage-accounts", "accounts"); params.baseModel.registerComponent("mailbox-base", "mailbox"); params.baseModel.registerComponent("alert-list", "mailbox"); params.baseModel.registerComponent("notification-list", "mailbox"); self.showRoleSwitcher = ko.observable(false); self.showSecuritySettings = ko.observable(false); var genericViewModel = null; self.userMappedRoles = [{ segment: "CORPADMIN", roles: ["CorporateAdminChecker", "CorporateAdminMaker"] }, { segment: "CORP", roles: ["Viewer", "Checker", "Maker"] }, { segment: "ADMIN", roles: ["AdminChecker", "AdminMaker"] }]; self.listItem = ko.observableArray(); self.listItemFooter = ko.observableArray(); self.listItemHeader = ko.observableArray(); self.menuLoaded = ko.observable(false); self.nls = resourceBundle; params.rootModel.userInfoPromise.then(function (data) { if (data.userData) { self.fullusername(data.userData.userProfile.lastName + ' ' + data.userData.userProfile.middleName + ' ' + data.userData.userProfile.firstName); } // require.undef("json!scb-viewer-menu"); // require.undef("json!scb-checker-menu"); // require.undef("json!menu"); self.init(); MenuModel.getMenu(self.menu()).then(function (data) { if (data.menus[params.baseModel.getDeviceSize()]) { self.listItem(data.menus[params.baseModel.getDeviceSize()]); } if (!self.listItem().length) { var arrMenus = new Array(); for (var i in data.menus.default) { var d = data.menus.default[i]; //var = window.device.platform.toUpperCase(); // && d.mobileFunction if (params.baseModel.cordovaDevice()) { arrMenus.push(d); } else { arrMenus.push(d); } } self.listItem(arrMenus); } if (!self.listItemFooter().length) { self.listItemFooter(data.menus.footer); } if (!self.listItemHeader().length) { self.listItemHeader(data.menus.header); } if (params.dashboard.userData.userProfile) { Platform.getInstance().then(function (platform) { platform("displaySecurity", params.dashboard.userData.userProfile.userName, self.showSecuritySettings); }); self.userMappedRoles = self.userMappedRoles.filter(function (element) { element.roles = element.roles.filter(function (elem) { return params.dashboard.userData.userProfile.roles.indexOf(elem) !== -1; }); return element.roles && element.roles.length > 0; }); if (self.userMappedRoles.length > 1 || (self.userMappedRoles.length === 1 && self.userMappedRoles[0].roles.length > 1)) { self.showRoleSwitcher(true); } MenuModel.getAvt().then(function (data) { self.avtMenuSrc(data.profilePicture); }); } self.menuLoaded(true); }); }); self.logout = function () { window.onbeforeunload = null; if (Constants.authenticator === "OBDXAuthenticator") { MenuModel.logOutDBAuth(); window.location = "index.html?module=login"; //ham nay chi location // Platform.getInstance().then(function (platform) { // platform("logOut"); // }); } else { MenuModel.logOutDBAuth(); Platform.getInstance().then(function (platform) { platform("logOut"); }); } }; self.loadTabInfo = function (url) { if (params.baseModel.cordovaDevice()) { window.plugins.browsertab.isAvailable(function (isAvailable) { if (isAvailable) { window.plugins.browsertab.openUrl(url); } else { window.open(url, '_blank').focus(); } }); } else { window.open(url, '_blank').focus(); } } // SCB NHUTHM /////// self.onSelectClick = ko.observable(); self.onSelectClick.subscribe(function (data) { //self.link = '/webhelp/Content/scb/introduce.htm'; if (data.split('.')[0]) { if (data.split('.')[0] === 'servicesAndProduct') { self.link = 'https://www.scb.com.vn/vie/pages/personal_productservices'; self.loadTabInfo(self.link); } else if (data.split('.')[0] === 'promotion') { // self.newtitle = self.nls.quickLinks.labels.services; self.link = 'https://www.scb.com.vn/vie/pages/promotions_personal'; self.loadTabInfo(self.link); // } else if (data.split('.')[0] === 'marketing') { } else { // self.newtitle = self.nls.quickLinks.labels.promotion; params.baseModel.registerComponent(data.split('.')[0], data.split('.')[1]); params.dashboard.loadComponent(data.split('.')[0], {}, self); } } }); self.getRootContext = function ($root) { genericViewModel = $root; }; require(["hammerjs", "ojs/ojjquery-hammer"], function (Hammer) { $("#main") .ojHammer({ "recognizers": [ [Hammer.Swipe, { "direction": Hammer.DIRECTION_HORIZONTAL }] ] }) .on("swiperight", function (event) { if (event.center.x < 200 && event.target.nodeName === "DIV") { self.toggleInner(); } }); }); // Keycode for ALT + M $(document).keyup(function (event) { if (event.keyCode === 77 && event.altKey && event.preventDefault() && event.cancelable) { event.preventDefault(); self.toggleInner(); } }); self.loadPage = function (data) { params.dashboard.headerCaption(""); self.toggleInner(); params.menuOptionSelect(data); self.selectedItem(null); }; function getSelectedNode(node) { var path = node.split("~"); var nodeObj = self.listItem(); for (var i = 0; i < path.length; i++) { for (var j = 0; j < nodeObj.length; j++) { if (nodeObj[j].name === path[i]) { nodeObj = nodeObj[j].submenus || nodeObj[j]; break; } } } self.loadPage(nodeObj); } self.menuItemSelect = function (event, ui) { var node = ui.item[0].id; getSelectedNode(node); }; self.selectedItem = ko.observable("dashboard"); self.selectedItem.subscribe(function (newValue) { if (newValue !== null) { getSelectedNode(newValue); } }); self.selectedItemFromLogin = ko.observable(); // self.selectedItemFromLogin.subscribe(function (data) { // if (data.split('.')[0]) // params.baseModel.registerComponent(data.split('.')[0], data.split('.')[1]); // params.dashboard.loadComponent(data.split('.')[0], {}, self); // self.toggleInner(); // }); //phucnnd mobile code. ios self.selectedItemFromLogin.subscribe(function (data) { if (data.includes('.')) { params.baseModel.registerComponent(data.split('.')[0], data.split('.')[1]); params.dashboard.loadComponent(data.split('.')[0], {}, self); } else { var name = $('#' + data).attr('name'); if (name) { self.loadTabInfo(name); } } self.toggleInner(); }); self.itemOnly = function (context) { if (Constants.userSegment === "ANON") { //console.log("ANON"); return true; } else { //console.log("context.leaf: "+context.leaf); return true; } }; params.baseModel.registerComponent("manage-accounts", "accounts"); var subscriptions = params.rootModel.currentRole.subscribe(function (value) { if (params.rootModel.isUserDataSet() && value[0]) { var segmentRole = value[0].split("~"); var computedRole = genericViewModel.computeRole(segmentRole[1], params.dashboard.userData.userProfile.roles); if (Constants.userSegment !== segmentRole[0]) { params.rootModel.changeUserSegment(segmentRole[0], params.dashboard.userData, computedRole); } else { if (params.dashboard.application() !== computedRole) { params.rootModel.dashboardRole = computedRole; params.dashboard.switchModule(computedRole); } } } }); self.dispose = function () { subscriptions.dispose(); }; self.clickHeaderAndFooterItems = function (item) { self.selectedItem(null); params.baseModel.registerComponent(item.name, item.module); self.toggleInner(); params.dashboard.loadComponent(item.name); }; }; return { viewModel: vm, template: template }; });